// pages/goods_detail/goods_detail.js
/* 
1 发送请求获取数据 
2 点击轮播图 预览大图
  1 给轮播图绑定点击事件
  2 调用小程序的api  previewImage 
3 点击 加入购物车
  1 先绑定点击事件
  2 获取缓存中的购物车数据 数组格式 
  3 先判断 当前的商品是否已经存在于 购物车
  4 已经存在 修改商品数据  执行购物车数量++ 重新把购物车数组 填充回缓存中
  5 不存在于购物车的数组中 直接给购物车数组添加一个新元素 新元素 带上 购买数量属性 num  重新把购物车数组 填充回缓存中
  6 弹出提示
4 商品收藏
  1 页面onShow的时候  加载缓存中的商品收藏的数据
  2 判断当前商品是不是被收藏 
    1 是 改变页面的图标
    2 不是 。。
  3 点击商品收藏按钮 
    1 判断该商品是否存在于缓存数组中
    2 已经存在 把该商品删除
    3 没有存在 把商品添加到收藏数组中 存入到缓存中即可
 */
import {
  request
} from '../../request/request'
import regeneratorRuntime from '../../lib/runtime/runtime';
import {showToast} from '../../utils/asyncWX'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodsObj: {},
    collected: false
  },
  // 存储商品数据
  goodsInfo: {},
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // console.log(options);
    // 1 获取当前的小程序的页面栈-数组 长度最大是10页面 
    let pages = getCurrentPages();
    // console.log(pages);
    // 2 数组中 索引最大的页面就是当前页面
    let currentPage = pages[pages.length - 1];
    // console.log(currentPage);
    // 3 获取url上的goods_id参数
    let {goods_id} = currentPage.options  
    this.getDetailData(goods_id)
   
  },
  // 获取商品详情数据
  async getDetailData(goodsId) {
    let res = await request({
      url: '/goods/detail',
      data: {goods_id: goodsId}
    })
    console.log(res);
    this.goodsInfo = res.message
    // 获取收藏的缓存数据
    const collect = wx.getStorageSync('collect') || [];
    // some函数有一个返回为true，结果为true
    let collected = collect.some(v => v.goods_id === this.goodsInfo.goods_id)
    // console.log(collected);
    this.setData({
     goodsObj: {
       pics: this.goodsInfo.pics,
       goods_price:this.goodsInfo.goods_price,
       goods_name:this.goodsInfo.goods_name,
       goods_introduce:this.goodsInfo.goods_introduce 
     },
     collected
    })
    
  },
  // 处理图片预览
  handleImgPre(e) {
    // 1 先构造要预览的图片数组 
    // console.log(this.data.goodsObj.pics);
    let urls = this.goodsInfo.pics.map(item => item.pics_mid)
    // 2 接收传递过来的图片url
    let current = e.currentTarget.dataset.url
    // console.log(current);
    wx.previewImage({
      current, // 当前显示图片的http链接
      urls // 需要预览的图片http链接列表
    })

  },
  // 处理添加购物车
  handleAddCart() {
    let cart = wx.getStorageSync('cart') || [];
    console.log( this.goodsInfo);
    // 返回当前的索引
    let index = cart.findIndex(v => v.goods_id === this.goodsInfo.goods_id)
    console.log(index);
    if(index === -1) {
      //3  不存在 第一次添加
      this.goodsInfo.num = 1
      this.goodsInfo.checked = true
      cart.push(this.goodsInfo)
    } else {
      cart[index].num++    
    }
     // 5 把购物车重新添加回缓存中
    wx.setStorageSync("cart", cart);
    // 弹出提示
    wx.showToast({
      title: '添加成功',
      icon: 'success', 
      // true: 防止手抖多次点击    
      mask: true,
    });
  },
  // 处理收藏商品
  async handleCollect() {
    let collected = false
    // 获取缓存数据
    const collect = wx.getStorageSync('collect') || [];
    let index = collect.findIndex(v => v.goods_id === this.goodsInfo.goods_id)
    // console.log(index);
    // 1 判断该商品是否存在于缓存数组中
    // 不存在
    if(index === -1) {
      collect.push(this.goodsInfo)
      await showToast({title: '收藏成功', icon: 'success'})
      collected = true
    } else {
      collect.splice(index, 1)    
      await showToast({title: '取消收藏', icon: 'error'})
      collected = false
    }
  //  存入到缓存中即可
    wx.setStorageSync('collect', collect);
    this.setData({
      collected
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },
})